/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sie_invdis;

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.print.PageFormat;

/**
 *
 * @author Administrador
 */
public class sie_impresiones {


    private Font fuente = new Font("Dialog", Font.PLAIN, 10);
	private PrintJob pj;
	private Graphics pagina;
    private Vector cadenas_a_imprimir;
    private JTextArea Objeto_textarea;
    private JTable Objeto_tabla;

    public sie_impresiones()
	{
		this.cadenas_a_imprimir=new Vector(1);
	}
	/********************************************************************
	*	A continuación el método "imprimir(String)", el encargado de 	*
	*	colocar en el objeto gráfico la cadena que se le pasa como 		*
	*	parámetro y se imprime.											*
	********************************************************************/
    public void imprimir_all(int opcion,int pag)
    {
        //LO COLOCO EN UN try/catch PORQUE PUEDEN CANCELAR LA IMPRESION
        this.pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "Imprimir Ticket", null);
        float dif=0;
        int bloquefactura=20,bloqueusado=0,controlfila=0,bloquefijo=0;
        //this.pj = Toolkit.getDefaultToolkit().getPrintJob(null, "Imprimir Ticket", null);
		try
		{
			pagina = pj.getGraphics();
            pagina.setFont(fuente);
			pagina.setColor(Color.black);
            int indice_arreglo=0,filas_impresion=0,ni=0,filas_dif=0,nip=0,nif=0;
            int nobjetotabla=this.getObjeto_tabla().getRowCount();
            int nobjetocadenas=this.cadenas_a_imprimir.size();
            String s="",s2="";
            if(pagina!=null)
            {
                //System.out.println("Numero de filas para imprimir: "+nobjetotabla);
                /*Impresion de encabezado*/
                for(indice_arreglo=0;indice_arreglo<nobjetocadenas &&
                        !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;indice_arreglo++,filas_impresion++)
                {
                    pagina.drawString(this.cadenas_a_imprimir.get(filas_impresion)+"",0,55+(filas_impresion*9));
                }
                filas_impresion+=2;
                /**/
                //mando imprimir recepcion normal
                if (opcion==1)
                 {
                        pagina.drawString("Cant.",0,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo",35,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Descripcion",130,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Precio",230,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Id",260,50+(filas_impresion*10));//total
                        filas_impresion+=2;

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>12)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,12);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),0,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),35,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,130,50+((filas_impresion)*10));//descripcion 140 120 100
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,4)+""),230,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),260,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);


                             }
                        System.out.println("Termine de imprimir los productos");
                           filas_impresion++;

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
                //mando imprimir recepcion normal
                if (opcion==2)
                 {
                        pagina.drawString("Cant.",0,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo",25,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Descripcion",110,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Falt.",230,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("sobr.",260,50+(filas_impresion*10));//total
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        for(ni=0;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                               dif = Float.valueOf(this.Objeto_tabla.getValueAt(ni, 7).toString()).floatValue()+Float.valueOf(this.Objeto_tabla.getValueAt(ni, 6).toString()).floatValue();
                         if (dif != 0)
                               {
                                filas_dif++;//veo cuales son realmente filas
                                if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>12)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,12);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),0,50+(((filas_impresion)-(ni-filas_dif))*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),25,50+(((filas_impresion)-(ni-filas_dif))*10));//codigo
                                pagina.drawString(s,110,50+(((filas_impresion)-(ni-filas_dif))*10));//descripcion 140 120 100
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),230,50+(((filas_impresion)-(ni-filas_dif))*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),260,50+(((filas_impresion)-(ni-filas_dif))*10));//id
                                System.out.println("Imprimiendo :"+s);

                                }
                        }
                        filas_impresion+=1;
                         pagina.drawString("Responsable Almacen: ______________",0,50+(((filas_impresion)-(ni-filas_dif))*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Empaco: ______________",0,50+(((filas_impresion)-(ni-filas_dif))*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Recibio: ______________",0,50+(((filas_impresion)-(ni-filas_dif))*10));//100
                        pagina.drawString(".",0,50+(((filas_impresion)-(ni-filas_dif))*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+(((filas_impresion)-(ni-filas_dif))*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+(((filas_impresion)-(ni-filas_dif))*10));//100
                        System.out.println("Termine de imprimir los productos");
                 }
                if (opcion==3)
                 {
                        pagina.drawString("Tienda",0,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo",60,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Cantidad",120,50+(filas_impresion*10));//precio u 50
                         filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        for(ni=0;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {


                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),0,50+((filas_impresion)*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),60,50+((filas_impresion)*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),120,50+((filas_impresion)*10));//descripcion 140 120 100

                                //System.out.println("Imprimiendo :"+s);


                        }
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+((filas_impresion)*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+((filas_impresion)*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+(filas_impresion)*10);//100
                        System.out.println("Termine de imprimir los productos");
                 }
                if (opcion==4)
                 {
                        //Impresion de Productos de requisicion de Traspaso
                        pagina.drawString("Cant.",10,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo",35,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Descripcion",130,50+(filas_impresion*10));//precio u 50

                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                        nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                if((this.Objeto_tabla.getValueAt(ni,3)+"").length()>30)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"").substring(0,30);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),35,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,130,50+(filas_impresion*10));//descripcion 140 120 100
                        }
                        System.out.println("sali del for");
                        filas_impresion+=1;
                        pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }
                if (opcion==5)
                 {
                        //Impresion de Productos de movimientos al inventario en almacen
                        pagina.drawString("Cant.",10,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo",35,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Descripcion",125,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Item",265,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Precio",345,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Id",385,50+(filas_impresion*10));//cantidad 20
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                    /*Impresion de los productos*/
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {

                                if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>20)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,20);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),35,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,125,50+(filas_impresion*10));//descripcion 140 120 100
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),265,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),345,50+(filas_impresion*10));//codigo
                                pagina.drawString("Id_"+String.valueOf(ni+1),385,50+(filas_impresion*10));//codigo
                        }
                        System.out.println("sali del for");
                        filas_impresion+=1;
                        pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }
                if (opcion==6)
                 {
                        //Impresion de Productos de moviemientos al almacen
                        pagina.drawString("Cant.",10,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo",35,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Descripcion",125,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Item",265,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Precio",345,50+(filas_impresion*10));//cantidad 20
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                    /*Impresion de los productos*/
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {

                                if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>15)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,15);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),35,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,125,50+(filas_impresion*10));//descripcion 140 120 100
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),245,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),325,50+(filas_impresion*10));//codigo

                        }
                        System.out.println("sali del for");
                        filas_impresion+=1;
                        pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }
                 if (opcion==7)
                 {
                        //Impresion de Productos de requisicion de Traspaso
                        pagina.drawString("Cant.",10,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo",35,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Hubicacion",130,50+(filas_impresion*10));//precio u 50

                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                      nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                if((this.Objeto_tabla.getValueAt(ni,3)+"").length()>60)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"").substring(0,60);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),35,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),130,50+(filas_impresion*10));//codigo
                                 filas_impresion+=1;
                                pagina.drawString(s,10,50+(filas_impresion*10));//descripcion 140 120 100
                        }
                        System.out.println("sali del for");
                        filas_impresion+=1;
                        pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }
                /*Impresion de pie de pagina despues del asterisco . */
            if (opcion==8)
                 {
                        //Impresion en formato de traspaso para enviar a tuxtla
                        pagina.drawString("IDCODIGO/DES.",10,50+(filas_impresion*10));//100
                        pagina.drawString("PRECIO",120,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("ENVIADO",155,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("RECIBIDO",190,50+(filas_impresion*10));//precio u 50
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                      nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                    for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                if((this.Objeto_tabla.getValueAt(ni,3)+"").length()>30)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"").substring(0,30);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((ni+" " +this.Objeto_tabla.getValueAt(ni,2)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString(("$"+this.Objeto_tabla.getValueAt(ni,6)+""),120,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),155,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),190,50+(filas_impresion*10));//codigo
                                filas_impresion+=1;
                                pagina.drawString(s,10,50+(filas_impresion*10));//descripcion 140 120 100
                        }
                 filas_impresion++;
                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                       {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                       }
                       // System.out.println("sali del for");
                        //filas_impresion+=1;
                       // pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }

                 if (opcion==9)
                 {
                        //Impresion de Productos de traspaso generado en punto de venta sie
                        pagina.drawString("IDCODIGO/DES.",10,50+(filas_impresion*10));//100
                        pagina.drawString("PRECIO",120,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("ENVIADO",155,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("RECIBIDO",210,50+(filas_impresion*10));//precio u 50
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                      nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                if((this.Objeto_tabla.getValueAt(ni,3)+"").length()>30)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"").substring(0,30);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((ni+"- "+this.Objeto_tabla.getValueAt(ni,2)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,5)+""),120,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),155,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),210,50+(filas_impresion*10));//codigo
                                filas_impresion+=1;
                                pagina.drawString(s,10,50+(filas_impresion*10));//descripcion 140 120 100
                        }
                 filas_impresion++;

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
                       // System.out.println("sali del for");
                        //filas_impresion+=1;
                       // pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }
                 if (opcion==10)
                 {
                        //Impresion en formato de traspaso para enviar a tuxtla
                        pagina.drawString("IDCODIGO/DES.",10,50+(filas_impresion*10));//100
                        pagina.drawString("ENVIADO",140,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("PRECIO",165,50+(filas_impresion*10));//precio u 50

                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                      nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                    for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                if((this.Objeto_tabla.getValueAt(ni,3)+"").length()>30)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"").substring(0,30);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,3)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((ni+" " +this.Objeto_tabla.getValueAt(ni,2)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,9)+""),140,50+(filas_impresion*10));//codigo
                                pagina.drawString(("$"+this.Objeto_tabla.getValueAt(ni,10)+""),165,50+(filas_impresion*10));//codigo

                                filas_impresion+=1;
                                pagina.drawString(s,10,50+(filas_impresion*10));//descripcion 140 120 100
                        }
                 filas_impresion++;
                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                       {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                       }
                       // System.out.println("sali del for");
                        //filas_impresion+=1;
                       // pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }
                 if (opcion==11)//imprimo facturas en bloque
                 {

                        filas_impresion+=1;

                        //filas_impresion=filas_impresion-1;
                      nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                    for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                        bloqueusado+=1;
                        controlfila+=1;
                        if((this.Objeto_tabla.getValueAt(ni,1)+"").length()>60)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"").substring(0,60);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"");
                                    }
                       if(controlfila<11)
                            {
                                bloquefijo=50;
                            }
                       else
                            {
                                bloquefijo=57;
                            }
                                pagina.drawString(this.Objeto_tabla.getValueAt(ni,0)+"",25,bloquefijo+(filas_impresion*10));//cantidad
                                pagina.drawString(s+" "+this.Objeto_tabla.getValueAt(ni,2),90,bloquefijo+(filas_impresion*10));//codigo
                                //pagina.drawString(ni+" ",210,50+(filas_impresion*10));//codigo
                                //pagina.drawString(ni+" ",310,50+(filas_impresion*10));//cantidad
                                pagina.drawString(this.Objeto_tabla.getValueAt(ni,4)+"",420,bloquefijo+(filas_impresion*10));//codigo
                                pagina.drawString(this.Objeto_tabla.getValueAt(ni,7)+"",510,bloquefijo+(filas_impresion*10));//codigo

                                filas_impresion+=1;
                        }
                        filas_impresion=filas_impresion+((bloquefactura-bloqueusado)*2);

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                       {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                       }
                 }//fin de 11

                  if (opcion==12)
                 {
                        //Impresion en formato de traspaso para enviar a tuxtla
                        pagina.drawString("Folio",10,50+(filas_impresion*10));//100
                        pagina.drawString("Ref",40,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Cantidad",80,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Cambio",120,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Total",160,50+(filas_impresion*10));//precio u 50
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                      nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                    for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                if((this.Objeto_tabla.getValueAt(ni,11)+"").length()>20)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,11)+"").substring(0,20);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,11)+"");
                                    }

                                if((this.Objeto_tabla.getValueAt(ni,3)+"").length()>10)
                                    {
                                        s2=(this.Objeto_tabla.getValueAt(ni,3)+"").substring(0,10);
                                    }
                                else
                                    {
                                        s2=(this.Objeto_tabla.getValueAt(ni,3)+"");
                                    }
                                System.out.println("Imprimiendo :"+s);
                                pagina.drawString((ni+" " +this.Objeto_tabla.getValueAt(ni,0)+""),10,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),40,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,7)+""),80,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,8)+""),120,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,9)+""),160,50+(filas_impresion*10));//codigo
                                filas_impresion+=1;
                                pagina.drawString(s2,10,50+(filas_impresion*10));//descripcion 140 120 100
                                pagina.drawString(s,70,50+(filas_impresion*10));//descripcion 140 120 100
                        }
                 filas_impresion++;
                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                       {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                       }
                       // System.out.println("sali del for");
                        //filas_impresion+=1;
                       // pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }
            if (opcion==13)
                 {
                        //Impresion en formato de traspaso para enviar a tuxtla

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }

                 filas_impresion++;
                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                       {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                       }

                 }
                if (opcion==14)
                 {
                        //Impresion en formato de traspaso para enviar a tuxtla
                        pagina.drawString("Concepto",10,50+(filas_impresion*10));//100
                        pagina.drawString("Piezas",200,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Costo",280,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Precio",360,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Utilidad",440,50+(filas_impresion*10));//precio u 50
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                      nif=((pag+1)*30);
                        nip=((pag+1)*30)-30;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                    for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),10,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,1)+""),200,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,2)+""),280,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,3)+""),360,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,4)+""),440,50+(filas_impresion*10));//codigo

                        }
                 filas_impresion++;
                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                       {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                       }
                       // System.out.println("sali del for");
                        //filas_impresion+=1;
                       // pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }//fin de opcio 14
                 if (opcion==15)
                 {
                        //Impresion en formato de traspaso para enviar a tuxtla
                        pagina.drawString("Proveedor",10,50+(filas_impresion*10));//100
                        pagina.drawString("Piezas",200,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Costo",280,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Precio",360,50+(filas_impresion*10));//precio u 50
                        pagina.drawString("Diferencia",440,50+(filas_impresion*10));//precio u 50
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                      nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                     System.out.println("Imprimiendo en opcion 7 :"+opcion);
                    /*Impresion de los productos*/
                    for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {
                                if((this.Objeto_tabla.getValueAt(ni,8)+"").length()>30)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,8)+"").substring(0,30);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,8)+"");
                                    }
                                pagina.drawString(s,10,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,1).toString().replace("<html>", "").replace("</html>", "").replace("<b>", "").replace("</b>", "").replace("<h3>", "").replace("</h3>", "")+""),200,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,3).toString().replace("<html>", "").replace("</html>", "").replace("<b>", "").replace("</b>", "").replace("<h3>", "").replace("</h3>", "")+""),280,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,2).toString().replace("<html>", "").replace("</html>", "").replace("<b>", "").replace("</b>", "").replace("<h3>", "").replace("</h3>", "")+""),360,50+(filas_impresion*10));//codigo
                                pagina.drawString((""+this.Objeto_tabla.getValueAt(ni,4).toString().replace("<html>", "").replace("</html>", "").replace("<b>", "").replace("</b>", "").replace("<h3>", "").replace("</h3>", "")+""),440,50+(filas_impresion*10));//codigo

                        }
                 filas_impresion++;
                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                       {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                       }
                       // System.out.println("sali del for");
                        //filas_impresion+=1;
                       // pagina.drawString("Responsable Almacen: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Empaco: ______________",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString("Recibio: ______________",10,50+(filas_impresion*10));//100
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                       // filas_impresion+=1;
                       // pagina.drawString(".",10,50+(filas_impresion*10));//100
                        //System.out.println("Termine de imprimir los productos");
                 }

            }
            pagina.dispose();
            pagina.finalize();
			pj.end();
		}
        catch(Exception e)
		{
			System.out.println("LA IMPRESION HA SIDO CANCELADA..."+e.getMessage());
		}
	}//FIN DEL PROCEDIMIENTO imprimir(String)

    public void setOneItem_cadenas_a_imprimir(String s)
    {
        this.cadenas_a_imprimir.addElement(s);
    }
    /**
     * @return the Objeto_textarea
     */
    public JTextArea getObjeto_textarea() {
        return Objeto_textarea;
    }

    /**
     * @param Objeto_textarea the Objeto_textarea to set
     */
    public void setObjeto_textarea(JTextArea Objeto_textarea) {
        this.Objeto_textarea = Objeto_textarea;
    }

    /**
     * @return the Objeto_tabla
     */
    public JTable getObjeto_tabla() {
        return Objeto_tabla;
    }

    /**
     * @param Objeto_tabla the Objeto_tabla to set
     */
    public void setObjeto_tabla(JTable Objeto_tabla) {
        this.Objeto_tabla = Objeto_tabla;
    }




}
